草庐IT

C++ STL : Custom sorting one vector based on contents of another

全部标签

c++ - 你最喜欢的 STL 技巧是什么?

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visitthehelpcenter.关闭11年前。我用C++编程已经有一段时间了,但时不时会偶然发现一个使用STL的代码片段,这需要我自己花费相当长的时间和更多的代码来完成。STL需要相当长的时间来适应,并且没有多少资源可以提供有关如何使用它的真实示例。请与我分享您最喜欢的STL功能! 最佳答案 使用erase-remove-idiom在线性时间中从vector中删除某些元素:

c++ - STL 容器是否设计为允许继承?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:IsitokaytoinheritimplementationfromSTLcontainers,ratherthandelegate?我的问题与Whydon'tSTLcontainershavevirtualdestructors?有关有些人(包括前一个问题的作者)确信没有虚拟dtor意味着类不可继承。我对如此强烈的声明持怀疑态度,因此我询问了来源或一些推理,但大多数受访者保持沉默。也没有人回复我的answer所以我认为质疑前一个问题中的假设并澄清这个重要问题是个好主意。STL容器是否设计为允许继承?更一般地

c++ - STL 容器是否设计为允许继承?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:IsitokaytoinheritimplementationfromSTLcontainers,ratherthandelegate?我的问题与Whydon'tSTLcontainershavevirtualdestructors?有关有些人(包括前一个问题的作者)确信没有虚拟dtor意味着类不可继承。我对如此强烈的声明持怀疑态度,因此我询问了来源或一些推理,但大多数受访者保持沉默。也没有人回复我的answer所以我认为质疑前一个问题中的假设并澄清这个重要问题是个好主意。STL容器是否设计为允许继承?更一般地

c++ - 是否有可能在任何地方引发异常的 STL 容器方法列表?

我知道STL会抛出内存分配错误,或者如果包含的类型在其构造函数/赋值运算符中抛出。否则,显然“一些”STL方法可能会引发其他异常。每个人似乎都提到的例子是vector::at(),但我在任何地方都找不到其他人的列表。有人知道这样的list吗? 最佳答案 不会100%准确,并且适​​用于C++03,但基于通过GCC4.3.4grepping的半小时工作包括,忽略tr1和ext但包括iostream。至关重要的是,其中一些检查可能是由于此实现更喜欢更具防御性的编码,并且可能未在标准中强制要求并且普遍可用....位集std::overfl

c++ - 是否有可能在任何地方引发异常的 STL 容器方法列表?

我知道STL会抛出内存分配错误,或者如果包含的类型在其构造函数/赋值运算符中抛出。否则,显然“一些”STL方法可能会引发其他异常。每个人似乎都提到的例子是vector::at(),但我在任何地方都找不到其他人的列表。有人知道这样的list吗? 最佳答案 不会100%准确,并且适​​用于C++03,但基于通过GCC4.3.4grepping的半小时工作包括,忽略tr1和ext但包括iostream。至关重要的是,其中一些检查可能是由于此实现更喜欢更具防御性的编码,并且可能未在标准中强制要求并且普遍可用....位集std::overfl

c++ - STL映射查找线程安全

STLmap线程上的find调用安全吗? 最佳答案 不,C++规范不保证任何STL容器上操作的规范中的线程安全。如果线程安全很重要,您应该提供自己的锁定。话虽如此,不同的实现似乎提供了不同的保证。例如,大多数似乎允许多个并发读取器,只要没有同时执行写入。如果您不关心可移植性,则可以研究实现文档。例如来自here对于SGISTL:TheSGIimplementationofSTListhread-safeonlyinthesensethatsimultaneousaccessestodistinctcontainersaresafe,

c++ - STL映射查找线程安全

STLmap线程上的find调用安全吗? 最佳答案 不,C++规范不保证任何STL容器上操作的规范中的线程安全。如果线程安全很重要,您应该提供自己的锁定。话虽如此,不同的实现似乎提供了不同的保证。例如,大多数似乎允许多个并发读取器,只要没有同时执行写入。如果您不关心可移植性,则可以研究实现文档。例如来自here对于SGISTL:TheSGIimplementationofSTListhread-safeonlyinthesensethatsimultaneousaccessestodistinctcontainersaresafe,

c++ - 用 C++ 编写我自己的类似 STL 的迭代器的实现

我目前正在尝试了解各种语言中迭代器的内在特性,即它们的实现方式。比如下面这个类暴露了list接口(interface)。templateclassList{public:virtualvoidInsert(intbeforeIndex,constTitem)throw(ListException)=0;virtualvoidAppend(constTitem)=0;virtualTGet(intposition)constthrow(ListException)=0;virtualintGetLength()const=0;virtualvoidRemove(intposition)t

c++ - 用 C++ 编写我自己的类似 STL 的迭代器的实现

我目前正在尝试了解各种语言中迭代器的内在特性,即它们的实现方式。比如下面这个类暴露了list接口(interface)。templateclassList{public:virtualvoidInsert(intbeforeIndex,constTitem)throw(ListException)=0;virtualvoidAppend(constTitem)=0;virtualTGet(intposition)constthrow(ListException)=0;virtualintGetLength()const=0;virtualvoidRemove(intposition)t

c++ - STL vector 和线程安全

假设我有一个包含N个元素的vector,但该vector的最多n个元素具有有意义的数据。一个更新线程更新第n个或第n+1个元素(然后设置n=n+1),还检查n是否太接近N并在必要时调用vector::resize(N+M)。更新后,线程调用多个子线程最多读取第n个数据并进行一些计算。保证子线程永远不会更改或删除数据,(实际上没有任何数据被删除)并且更新程序在完成更新后立即调用子线程。目前还没有出现问题,但是我想问一下,在将vector重新分配到更大的内存块时是否会出现问题,如果上次更新还剩下一些子工作线程。或者在这种多线程情况下使用vector是否安全,因为它不是线程安全的?编辑:由于